<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh_CN" xml:lang="zh_CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="../rurple.css" type="text/css" />

<title>暂时...</title>
</head>
<body>
<h2 class="title">16. 暂时 ...</h2>

<p>当我们想在某个特定条件被满足前重复一些指令时，Python给了我们一个简单的方法来写这段程序，就是用一个新的关键词： <span class="pykeyword">while</span>。首先，我来演示一下如何用<i>虚拟码</i> 来重新写一个我们之前看到的例子。</p>

<pre>
当不在报警器上，
... 保持前进;
否则,
... 停止.
</pre>

<p>你会说，这个表达的跟之前的意思一样。 用Python代码，这里我们实际是这样写的:</p>

<pre>
<span class="keyword">while not</span> on_beeper():
    move()
 
turn_off()           
</pre>

<p>这里就不再需要<tt>重复</tt>了！ <b>试试看吧！</b></p>

<!--=====================================================-->
<hr class="line" />

<h3 class="try">轮到你了</h3>

<p>用 <span class="pykeyword">while</span> 和 <span class=
"pykeyword">not</span>重新写一段跨栏的程序，这样你就不需要使用那么多重复的命令了。换句话说，你程序的核心应该像是这样子的：</p>

<pre>
<span class="keyword">while not</span> on_beeper():
    move_or_jump()
 
turn_off()           
</pre>

<p>你要确保程序是可以运行的，别放弃哦！</p>

<h3 class="suggested">小实验：除草和播种时刻</h3>

<p>又是春天了。 乐跑的爸爸已经在花园里播下了种子，等待秋天的收获。 就像上次一样，一些地方两个种子都发芽了，而有些地方一个种子也没发芽。 一个典型的例子如下图所示 (见文档：harvest4.wld)。</p>

<p><img alt="weeding" src="../../images/intro/harvest4.png" /></p>

<p>现在大家一起来帮助乐跑给花园除草，使得没有一个地方有两个胡萝卜（这里我们用报警器来表示），而在没有胡萝卜的地方重新播种，目的是要让每个地方都有一个胡萝卜。</p>

<p>这儿有一个 <i>建议</i> ，部分代码可以使用新关键词 <span class="pykeyword">while</span>:</p>

<pre>
<span class="comment"># 介绍跟问题有关的单词</span>
next_to_a_carrot = on_beeper
plant_carrot = put_beeper
pick_carrot = pick_beeper

<span class="keyword">def</span> one_carrot_only():
    <span class="keyword">while</span> next_to_a_carrot():
        pick_carrot()      <span class="comment"># 把它们全捡起来!</span>            
    plant_carrot()         <span class="comment">#重新再种一个!</span>
</pre>

<p>这段代码与之前的相比短了很多吧？ ( <span class="pykeyword">def</span>中的三行取代了之前的六行)。并且，当同一点不止两个种子发芽的情况下，乐跑也是可以继续运行的。<br />
<b>试试看！</b><br />
<small>记住，事实上，移除种子再把它们重新正确地播种并 <b>不是</b>一个好主意！</small></p>

<div class="lessons_nav">
<a href="15-not.htm"><img alt="previous" src=
"../../images/previous.png" /> 不是真的!?</a> - 
<a href="../lessons_toc.htm"><img alt=
"home" src="../../images/home.png" /></a> - <a href="17-amazing1.htm">神奇-第一部分 <img alt="next" src="../../images/next.png" /></a>
</div>
</body>
</html>
